Given an integer array of even length arr
, return true
if it is possible to reorderarr
such thatarr[2 * i + 1] = 2 * arr[2 * i]
for every0 <= i < len(arr) / 2
, orfalse
otherwise.
Input: arr = [3,1,3,6] Output: false
Input: arr = [2,1,2,6] Output: false
Input: arr = [4,-2,2,-4] Output: true Explanation: We can take two groups, [-2,-4] and [2,4] to form [-2,-4,2,4] or [2,4,-2,-4].
2 <= arr.length <= 3 * 104
arr.length
is even.-105 <= arr[i] <= 105
classSolution: defcanReorderDoubled(self, arr: List[int]) ->bool: count= {} nums= [] forxinarr: ifx%2==0: ifxnotincount: count[x] =0count[x] +=1else: if2*xnotincount: count[2*x] =0count[2*x] -=1forx, vincount.items(): ifv<0: returnFalseelifv>0: nums.append(x) nums.sort(key=lambdax: (x>=0, abs(x))) forxinnums: ifcount[x] ==0: continueelif2*xincountandcount[x] <=count[2*x]: count[2*x] -=count[x] count[x] =0else: returnFalsereturnTrue